﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

// NOTA: puede usar el comando "Cambiar nombre" del menú "Refactorizar" para cambiar el nombre de interfaz "IChatService" en el código y en el archivo de configuración a la vez.
[ServiceContract]
public interface IChatService
{
    [OperationContract(IsOneWay = true)]
    void registrarNuevoNodo(String UrlEscucha, int idGrupo);

    [OperationContract(IsOneWay = true)]
    void enviarUsuariosConectados(int idGrupo, List<UsuarioChat> usuarios);

    [OperationContract(IsOneWay = true)]
    void nuevoUsuarioConectado(int idGrupo, UsuarioChat usuario);

    [OperationContract(IsOneWay = true)]
    void nuevosUsuariosConectado(int idGrupo, List<UsuarioChat> usuario);

    [OperationContract(IsOneWay = true)]
    void usuarioDesconectado(int idGrupo, UsuarioChat usuario);

    [OperationContract(IsOneWay = true)]
    void enviarMensaje(int idGrupo, Mensaje mensaje);

    [OperationContract(IsOneWay = true)]
    void refrescarListaUsuariosLogueados(int idGrupo);
}


[DataContract ]
public class UsuarioChat 
{
    [DataMember]
    public int id;

    [DataMember]
    public string nombre;
   
}

[DataContract]
public class Mensaje 
{
    [DataMember]
    public int usuarioOrigen;

    [DataMember]
    public int usuarioDestino;

    [DataMember]
    public string texto;

}

